perm filename PRANDR.SAI[BIG,HPM] blob
sn#390206 filedate 1978-10-25 generic text, type T, neo UTF8
PROCEDURE PWITHR(INTEGER ARRAY A; INTEGER N; REFERENCE BOOLEAN LAST);
comment collected algorithms #306 substitute for random permutations;
BEGIN
INTEGER I,J,K,L;
INTEGER ARRAY B[1:N];
IF LAST THEN BEGIN RAN(CALL(0,"TIMER")); LAST←FALSE; END;
FOR I←1 STEP 1 UNTIL N DO B[I]←A[I];
FOR I←1 STEP 1 UNTIL N DO
BEGIN
J←(N-I+1)*RAN(0);
L←1;
FOR K←0 STEP 1 UNTIL J DO BEGIN WHILE B[L]=-1 DO L←L+1; L←L+1; END;
A[I]←B[L-1];
B[L-1]←-1;
END;
END;